﻿using System;
using System.Collections.Generic;

using System.Text;
using System.Web.UI;

namespace TA.Turbo.Controls
{
	/// <summary>
	/// Allows a control's value to be posted by means of posting a number of sub-controls' values and/or properties.
	/// </summary>
	public interface IValueControlContainer
	{
		/// <summary>
		/// Gets collection of control references which point to the sub-controls that need to be posted in order for this control to be loaded.
		/// </summary>
		List<ControlReference> ValueChildren { get; }
		/// <summary>
		/// Gets collection of control references which point to the sub-controls that will transfer the properties which this control is not able to transfer itself.
		/// </summary>
		List<ControlReference> PropertiesChildren { get; }
		/// <summary>
		/// Gets the focusable sub-control (for Label).
		/// </summary>
		TControl Focusable { get; }
		/// <summary>
		/// Gets the validatable sub-control (for validators).
		/// </summary>
		TControl Validatable { get; }
		/// <summary>
		/// Gets collection of sub-controls that need to be validated in order to validate this control.
		/// </summary>
		List<TControl> RequiredValidationFields { get; }
	}
}
